/**
 * 复制文本到剪贴板
 * @param {string} text - 要复制的文本
 * @param {string} successMsg - 复制成功提示信息，默认为"复制成功"
 */
export const copyToClipboard = (text, successMsg = '复制成功') => {
    // #ifdef H5
    // H5环境使用navigator.clipboard API
    if (navigator.clipboard && window.isSecureContext) {
        navigator.clipboard.writeText(text).then(() => {
            // uni.showToast({
            //     title: successMsg,
            //     icon: 'success',
            //     duration: 2000
            // })
        }).catch(() => {
            // 如果navigator.clipboard失败，使用传统方法
            fallbackCopyTextToClipboard(text, successMsg)
        })
    } else {
        // 不支持navigator.clipboard时使用传统方法
        fallbackCopyTextToClipboard(text, successMsg)
    }
    // #endif
    
    // #ifdef MP-WEIXIN
    // 微信小程序环境
    uni.setClipboardData({
        data: text,
		showToast: false,
        success: () => {
            // uni.showToast({
            //     title: successMsg,
            //     icon: 'success',
            //     duration: 2000
            // })
        },
        fail: () => {
            uni.showToast({
                title: '复制失败',
                icon: 'none',
                duration: 2000
            })
        }
    })
    // #endif
    
    // #ifdef APP-PLUS
    // App环境
    uni.setClipboardData({
        data: text,
		showToast: false,
        success: () => {
            uni.showToast({
                title: successMsg,
                icon: 'success',
                duration: 2000
            })
        },
        fail: () => {
            uni.showToast({
                title: '复制失败',
                icon: 'none',
                duration: 2000
            })
        }
    })
    // #endif
}

/**
 * 传统复制方法（兼容性方案）
 * @param {string} text - 要复制的文本
 * @param {string} successMsg - 复制成功提示信息
 */
function fallbackCopyTextToClipboard(text, successMsg) {
    const textArea = document.createElement('textarea')
    textArea.value = text
    
    // 避免滚动到页面底部
    textArea.style.top = '0'
    textArea.style.left = '0'
    textArea.style.position = 'fixed'
    textArea.style.opacity = '0'
    
    document.body.appendChild(textArea)
    textArea.focus()
    textArea.select()
    
    try {
        const successful = document.execCommand('copy')
        if (successful) {
            uni.showToast({
                title: successMsg,
                icon: 'success',
                duration: 2000
            })
        } else {
            uni.showToast({
                title: '复制失败',
                icon: 'none',
                duration: 2000
            })
        }
    } catch (err) {
        uni.showToast({
            title: '复制失败',
            icon: 'none',
            duration: 2000
        })
    }
    
    document.body.removeChild(textArea)
} 